﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Data.SqlClient;

namespace TCCT_CTC_CSDLDangVienV1.DanhMuc
{
    public partial class frmVietTatList : frmBase
    {
        private string Action = MyConst.ACTION.Insert;
        public string SelectedID = string.Empty;

        public frmVietTatList()
        {
            InitializeComponent();
        }



        private static frmVietTatList _instance = null;
        public static frmVietTatList Instance
        {
            get
            {
                if (_instance == null || _instance.IsDisposed)
                    _instance = new frmVietTatList();
                return _instance;
            }
            set { _instance = value; }
        }

        private void frmVietTatList_Load(object sender, EventArgs e)
        {
            try
            {

                ApplyUI();

                Permision();

                if (!gTimKiemThongTin.Enabled) return;

                BindDataToControl();

                BindDataToGrid();
                frmVietTatList.Instance = this;
            }
            catch (Exception _ex)
            {
                ShowErrorMessage(_ex);
            }
        }

        //Nơi gán thuộc tính giao diện cho các control
        private void ApplyUI()
        {
            UI.Button.ApplyInsert(btnThemMoi);
            UI.Button.ApplyUpdate(btnSuaDoi);

            UI.Button.ApplyUpdate(btnXoa);

            UI.Button.ApplyClose(btnThoat);

            UI.Button.ApplyExportExcel(btnXuatExcel);


            UI.TextBox.ApplyFind(txtTextFind);


            UI.Grid.ApplyDefault(dgData);


        }

        //Kiểm tra xem user đang đăng nhập có quyền xem, thêm, sửa, xóa hay không?
        private void Permision()
        {
            try
            {
                if (!MyCommon.CurrentUserIsAdministrator)
                {
                    MyCommon.ShowDialogMessage("Bạn không có quyền truy cập mục này. Mọi cố gắng truy cập của bạn là vi phạm");
                    this.Enabled = false;
                }
            }
            catch (Exception _ex)
            {
                ShowErrorMessage(_ex);
            }
        }

        //Nơi tải dữ liệu danh mục lên các control để lựa chọn: ví dụ: Combobox, listbox ...
        private void BindDataToControl()
        {
            try
            {

            }
            catch (Exception _ex)
            {
                ShowErrorMessage(_ex);
            }
        }

        //Nơi tải dữ liệu lên grid chứa dữ liệu
        private void BindDataToGrid()
        {
            try
            {
                dgData.DataSource = SqlHelper.ExecuteDataTable(CommandType.Text, "Select * from tblVietTat Order By ChuoiVB ");
            }
            catch (Exception _ex)
            {
                ShowErrorMessage(_ex);
            }
        }

        private void btnThemMoi_Click(object sender, EventArgs e)
        {
            try
            {
                frmInputBox2 ff = new frmInputBox2();
                ff.Text = "Cap nhat viet tat";
                ff.lblLoiNhac.Text = "Chuỗi văn bản";
                ff.lblLoiNhac2.Text = "Chuỗi viết tắt thay thế";
                if (ff.ShowDialog() == DialogResult.OK)
                {
                    string sql = "Insert Into tblVietTat(ChuoiVB, VietTat) Values(@ChuoiVB, @VietTat) ";

                    List<SqlParameter> arrParameters = new List<SqlParameter>();

                    arrParameters.Add(SqlHelper.CreateParameterObject("@ChuoiVB", SqlDbType.NVarChar, ParameterDirection.Input, ff.txtKetQua.Text.Trim()));
                    arrParameters.Add(SqlHelper.CreateParameterObject("@VietTat", SqlDbType.NVarChar, ParameterDirection.Input, ff.txtKetQua2.Text));

                    SqlHelper.ExecuteNonQuery(CommandType.Text, sql, arrParameters);
                    BindDataToGrid();
                }
            }
            catch (Exception _ex)
            {

                ShowErrorMessage("Đã tồn tại viết tắt cho chuỗi văn bản này hoặc \n" + _ex);
            }
        }

        private void btnSuaDoi_Click(object sender, EventArgs e)
        {
            try
            {
                frmInputBox2 ff = new frmInputBox2();
                ff.Text = "Cap nhat viet tat";
                ff.lblLoiNhac.Text = "Chuỗi văn bản";
                ff.lblLoiNhac2.Text = "Chuỗi viết tắt thay thế";
                ff.txtKetQua.Text = GetString(dgData, "ChuoiVB");
                ff.txtKetQua2.Text = GetString(dgData, "VietTat");
                if (ff.ShowDialog() == DialogResult.OK)
                {
                    string sql = "Update tblVietTat Set ChuoiVB=@ChuoiVB, VietTat=@VietTat Where ID='" + GetString(dgData, "ID") + "' ";

                    List<SqlParameter> arrParameters = new List<SqlParameter>();

                    arrParameters.Add(SqlHelper.CreateParameterObject("@ChuoiVB", SqlDbType.NVarChar, ParameterDirection.Input, ff.txtKetQua.Text.Trim()));
                    arrParameters.Add(SqlHelper.CreateParameterObject("@VietTat", SqlDbType.NVarChar, ParameterDirection.Input, ff.txtKetQua2.Text));

                    SqlHelper.ExecuteNonQuery(CommandType.Text, sql, arrParameters);
                    BindDataToGrid();
                }
            }
            catch (Exception _ex)
            {

                ShowErrorMessage("Đã tồn tại viết tắt cho chuỗi văn bản này hoặc \n" + _ex);
            }
        }




        private void btnThoat_Click(object sender, EventArgs e)
        {
            try
            {
                this.DialogResult = DialogResult.Cancel;
                this.Close();
            }
            catch (Exception _ex)
            {
                ShowErrorMessage(_ex);
            }
        }


        private void txtTextFind_KeyDown(object sender, KeyEventArgs e)
        {
            try
            {
                if (e.KeyCode == Keys.Down)
                    dgData.Focus();
            }
            catch (Exception _ex)
            {
                ShowErrorMessage(_ex);
            }
        }



        //Nếu phím là enter và Action=Find thì có nghĩa là chấp nhận kết quả tìm kiếm.
        private void dgData_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {

            }
        }

        private void menuThemMoi_Click(object sender, EventArgs e)
        {
            if (btnThemMoi.Enabled)
                btnThemMoi_Click(null, null);
        }

        private void menuSuaDoi_Click(object sender, EventArgs e)
        {
            if (btnSuaDoi.Enabled)
                btnSuaDoi_Click(null, null);
        }




        private void menuTimKiem_Click(object sender, EventArgs e)
        {
            ResetValues(gTimKiemThongTin);
            txtTextFind.Focus();
        }



        private void btnXuatExcel_Click(object sender, EventArgs e)
        {
            try
            {
                ExportToExcel(dgData);
            }
            catch (Exception _ex)
            {
                ShowErrorMessage(_ex);
            }
        }

        private void txtTextFind_EditValueChanged(object sender, EventArgs e)
        {
            ((DataTable)dgData.DataSource).DefaultView.RowFilter = "ChuoiVB Like '%" + txtTextFind.Text.Trim() + "%' ";
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            try
            {
                if (ShowConfirmMessage("Bạn có chắc chắn xóa?") == DialogResult.Yes)
                {
                    string sql = "Delete From  tblVietTat  Where ID='" + GetString(dgData, "ID") + "' ";
                    SqlHelper.ExecuteNonQuery(CommandType.Text, sql);
                    BindDataToGrid();
                }
            }
            catch (Exception _ex)
            {

                ShowErrorMessage(_ex);
            }
        }








    }
}